package com.gyc.game.cchess.model.fen;

import com.gyc.game.cchess.model.BitPlane;

public class FenParser {

	// PNBRQK
	/**
	 * 
	 * 国际象棋 　就是表示双方棋子各在棋盘哪个格子上的。 规则是从第8横线开始顺次数到第1横线(白方在下，从上数到下)，从a线开始顺次数到h线；
	 * 白方棋子以大写字母PNBRQK表示， 黑方棋子以小写pnbrqk表示， 每个字母代表的意义与常规规定相同。
	 * 数字代表一个横线上的连续空格，反斜杠/表示结束一个横线的描述。
	 * 
	 * ：P=兵，N=马，B=象，R=车，Q=后，K=王
	 * 
	 * @param chessChar
	 * @return public final static byte B_BISHOP = 5; // 黑士 public final static
	 *         byte B_CANON = 4; // 黑炮 public final static byte B_CAR = 2; // 黑车
	 *         public final static byte B_ELEPHANT = 6; // 黑象
	 * 
	 *         public final static byte B_HORSE = 3;// 黑马 public final static
	 *         byte B_KING = 1; // 黑帅 0001 public final static byte B_PAWN = 7;
	 *         // 黑卒 0111
	 */
	public static int fenChessInt(char chessChar) {
		if (Character.isUpperCase(chessChar)) {
			switch (chessChar) {
			case 'K':// 将，帅
				return 1;
			case 'A':// 仕
				return 5;
			case 'B':// 相
			case 'E':// 象
				return 6;
			case 'N':// 马
			case 'H':// 
				return 3;
			case 'R':// 车
				return 2;
			case 'C':// 炮
				return 4;
			case 'P':
			default:// 卒，兵
				return 7;
			}
		} else {
			switch (chessChar) {
			case 'k':// 将，帅
				return 1;
			case 'a':// 仕
				return 5;
			case 'b':// 相
			case 'e':// 象
				return 6;
			case 'n':// 马
			case 'h':// 
				return 3;
			case 'r':// 车
				return 2;
			case 'c':// 炮
				return 4;
			case 'p':
			default:// 卒，兵
				return 7;
			}
		}
	}

	String init = "rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1";

	public BitPlane parse(String fen) {
		final BitPlane result = new BitPlane();
		
		//如果可以保证输入格式正确 可以省略规范操作
		//String fenclean = fen.trim().replaceAll("\\s\\s", " ");
		
		String[] parts = fen.split("\\s");
		
		
		
		
		return result;
	}

}
